// Header Protection
#ifndef _SCRIPTSYSTEM_H_
#define _SCRIPTSYSTEM_H_

// Include Files
#include "Definitions.h"
#include "System.h"

// Forward Declarations
class CScriptNode;

//class CGame;
//class CScriptStateEventArg;

// Namespace
namespace IE
{
	/////////////////////////////////////////////////////////////////////////////////
	// A system which runs scripts for the scene.
	class CScriptSystem : public ABCSystem
	{
	public:     // public methods
		CScriptSystem() : ABCSystem() { }
		virtual ~CScriptSystem() { }

		// Initialize the script system.
		void Initialize();

		// Shutdown the script system.
		void Shutdown();

		//private:    // event handlers
		//
		//	void OnScriptStateAdd( CScriptStateEventArg &_rArg );
		//	void OnScriptStateRemove( CScriptStateEventArg &_rArg );

	private:    // ABCSystem override methods

		// Called when the thread is started.
		virtual void ThreadBegin();

		// Called when the thread is stopped.
		virtual void ThreadEnd();

		// Called at the frame rate with which StartThread was called.
		// _fTime: float_t - the seconds that have passed since the last tick
		virtual void ThreadTick( float_t _fTime );

	private:    // data
		flist_t<CScriptNode *> m_lstNodes;

	private:    // dummy definitions
		CScriptSystem( CScriptSystem const & );
		CScriptSystem &operator =( CScriptSystem const & );
	};
}

// Header Protection
#endif // _SCRIPTSYSTEM_H_
